package {
	import Classes.ab_access;
	import Classes.pi_events;
	
	import UIFree.controls.uif_popupMenu;
	import UIFree.uif_Timer;
	
	import api_servers.api_externalserver;
	import api_servers.pi_mailserver;
	import api_servers.pi_servers;
	
	import dialogs.pi_albums;
	import dialogs.pi_payDialog;
	import dialogs.timeAlerts.pi_alertTime;
	
	import external.pi_ad2;
	
	import flash.events.Event;
	import flash.system.Security;
	
	import mailru.MailruCall;
	import mailru.MailruCallEvent;
	
	import manager.pi_mailManager;
	import manager.pi_manager;
	

	[SWF(width="760", height="956", backgroundColor="#FFFFFF")]
	public class mail_pj extends photo_inject {
		protected var _MailruCallActive: Boolean;
		public function mail_pj() {
			super();
		}

		override protected function createManager(): pi_manager {
			return new pi_mailManager(this);
		}
		
		override protected function initDefaults(user: Object): Object {
			var _def: Object = null;
			/*var _names: Array = [
				'Алина', 'Кристина', 'Ксюша', 'Мариша', 'Настя', 'Наташа', 'Алена', 'Алина', 'Аня', 'Вика', 
				'Даша', 'Диана', 'Ирина', 'Карина', 'Светлана', 'Таня', 'Юля'
			]
			
			var nindex: int = _names.indexOf(user.first_name) // Поиск по имени
			if (nindex > -1) {
				_def = {
					DEFAULT_MASK: 10340 + nindex,
					DEFAULT_EFFECT: 0,
					DEFAULT_GROUP : 1
				}
			} else */
			if (user.age < 18) { // Для детей
				if (user.sex == 0) { // Для мальчиков
					_def = {
						DEFAULT_MASK: 12420,
						DEFAULT_EFFECT: 0,
						DEFAULT_GROUP : 21
					};
				} else {	// Для девочек
					_def = {
						DEFAULT_MASK: 12420,
						DEFAULT_EFFECT: 0,
						DEFAULT_GROUP : 21
					};
				}
			} else if (user.sex == 0) { // Для мужчин
				_def = {
					DEFAULT_MASK: 12420,
					DEFAULT_EFFECT: 0,
					DEFAULT_GROUP : 21
				};
			} else {	// Для женщин
				_def = {
					DEFAULT_MASK: 12420,
					DEFAULT_EFFECT: 0,
					DEFAULT_GROUP : 21
				};
			}
			return _def;
		}
		
		override public function getClasses(): Object {
			var lc: Object = super.getClasses();
//			lc.alertTime = pi_alertTUser;
			lc.alertTime = pi_alertTime;
//			lc.alertTime = pi_alertPet;
			lc.popupMenu = uif_popupMenu;
			return lc;
		}
		
		override protected function securityInit(): void {
			super.securityInit();
			Security.allowDomain('*');
			Security.loadPolicyFile('http://content.foto.my.mail.ru/crossdomain.xml');
			
			MailruCall.init('mail_pj', externalserver.secrets[externalserver.app_id]);
			MailruCall.addEventListener(Event.COMPLETE, mailruReadyHandler);
			
			if (externalserver.vars['plugins'])
				pi_servers.PLUGINS_URL = externalserver.vars['plugins'];
		}
		
		override protected function serversInit(): void {
// 			pi_servers.ADDR = ['http://188.127.244.171', 'http://188.127.244.171', 'http://188.127.244.171', 'http://188.127.244.171']			
 			pi_servers.ADDR = ['http://188.127.228.242', 'http://188.127.228.242', 'http://188.127.228.242', 'http://oformi-foto.ru']			
			pi_servers.USERPHOTOHOST	= pi_servers.ADDR[2];
//			pi_servers.MROOT_URL		= pi_servers.ADDR[0] + '/games/data/images/cards/';
			pi_servers.MROOT_URL		= pi_servers.ADDR[3] + '/games/data/a/templates/';
			pi_servers.PREVIEW_URL		= pi_servers.MROOT_URL + 'jpg_preview/';
			pi_servers.EFFECTS_URL		= pi_servers.ADDR[2] + '/games/plugins/filters/';
			pi_servers.UPLOADJPG_URL	= pi_servers.ADDR[2] + '/games/index_pj.php';
			pi_servers.PLUGINS_URL		= pi_servers.ADDR[2] + '/games/plugins/v01/';
			pi_servers.IMAGESURL		= '/games/images/';
			pi_servers.FLASH_URL		= getHost() + '/games/data/images/cards'; 			
		}
		
		override protected function createSiteData(): Object {
			var obj: Object = {
				INVITEDESC		: '<b>10 руб. на ваш счет</b> за каждого друга, установившего приложение по вашему приглашению.',
				CURRENCY		: 'руб.',
				PAYCARDDESC		: pi_data.ORDERDESC + '\n<b>Стоимость этой открытки %s руб. будет снята с вашего счета.</b>\nНажмите кнопку "ок" если вы подтверждаете покупку.',
				SMALLBALANCE	: '<font color="#FF0000"><b>На вашем счету недостаточно средств.</b></font>\nДля текущей операции требуется %s1 руб., ваш текущий баланс %s2 руб.\nНажмите кнопку "ок", если вы хотите пополнить свой счет в приложении.',
				INVITEDETAIL	: '<img src="' + pi_servers.IMAGESURL + 'invite_2.jpg" height="332" align="left">\n<b>Внимание!</b> бонусы за приглашенных друзей вам начислятся лишь в том случае, если друзья установят приложение по ссылке приглашения (она появится в левом верхнем углу страницы друга)\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n',
				ERRORREADHASH	: 'Ошибка считывания хеша запроса.',
				CODEPRESENTPRICE: 10,
				ad: {
					ref_id: '898787368',
					asMail: true
				}
			}
			obj.NULLBALANCEDESC = '<font color="#FF0000"><b>Не хватает денег на счете?</b></font>\nВы можете получить ' + obj.INVITEDESC;
			return obj;
		}
		
		override public function albumAssessFromSend(albumOrPhoto: Object): Boolean {
			return (albumOrPhoto && 
					(!albumOrPhoto.hasOwnProperty('privacy') || (
						albumOrPhoto.hasOwnProperty('privacy') && (
						((albumOrPhoto.privacy == ab_access.BESTFRIENDS) || 
						 (albumOrPhoto.privacy == ab_access.FRIENDS) || 
						 (albumOrPhoto.privacy == ab_access.ALL)))))) || (albumOrPhoto == null);
		}
		
/*
		override protected function extendList(): Object {
			return {
				'mobile'		: {
					id: 0,
					file: 'c_mobile.swf',
					icon: 'c_mobile.swf.png',
					caption: 'Как фон для сотового телефона',
					png_only: true
				},
				'SOUND'			: {
					id: 1,
					file: 'c_sound.swf',
					icon: 'c_sound.swf.png',
					caption: 'Добавить музыку к открытке'
				}, 
				'extends'		: {
					id: 2,
					file: 'c_extends.swf',
					icon: 'c_extends.swf.png',
					caption: 'Загрузить фотографию',
					load: true
				},
				'tlt'			: {
					id: 3,
					file: 'c_title.swf',
					icon: 'c_title.swf.png',
					caption: 'Добавить/изменить текст к открытке',
					png_only: true
				},
				'COR'			: {
					id: 5,
					file: 'c_correction.swf',
					load: 5 
				},
				'printer'			: {
					id: 6,
					file: 'c_printer.swf',
					load: 4
				},
				'helperMulti'			: {
					id: 7,
					file: 'c_helperMulti.swf'
				},
				'adminConsol'			: {
					id: 8,
					file: 'c_admin.swf'
				},
				'search'			: {
					id: 9,
					file: 'c_search.swf',
					load: 3
				}
			}
		}
	*/
		
		override protected function extendList(): Object {
			return {
				'mobile'		: {
					id: 0,
					file: 'c_mobile.swf',
					icon: 'c_mobile.swf.png',
					caption: 'Как фон для сотового телефона',
					png_only: true
				},
				'SOUND'			: {
					id: 1,
					file: 'c_sound.swf',
					icon: 'c_sound.swf.png',
					caption: 'Добавить музыку к открытке'
				}, 
				'extends'		: {
					id: 2,
					file: 'c_extends.swf',
					icon: 'c_extends.swf.png',
					caption: 'Загрузить фотографию',
					load: true
				}, 
				'elems'		: {
					id: 3,
					file: 'c_elems.swf',
					icon: 'c_title.swf.png',
					caption: 'Дополнительные элементы',
					load: true
				},
				'tlt'			: {
					id: 4,
					file: 'c_title.swf'
				},
				'COR'			: {
					id: 5,
					file: 'c_correction.swf',
					load: 5 
				},
				'printer'			: {
					id: 6,
					file: 'c_printer.swf',
					load: 4
				},
				'helperMulti'			: {
					id: 7,
					file: 'c_helperMulti.swf'
				},
				'adminConsol'			: {
					id: 8,
					file: 'c_admin.swf'
				},
				'search'			: {
					id: 9,
					file: 'c_search.swf',
					load: 3
				},
				'FRAMES': {
					id		: 10,
					file	: 'c_frames.swf'
				},
				'VIN': {
					id		: 11,
					file	: 'c_vin.swf'
				}
			}
		}
			
		override public function get balanceMenu(): Array {
			return [
				{caption: 'Пополнить на 10 мэйликов (руб.)', event: pi_events.PAYFROMMAILIKI, value: 10},
				{caption: 'Пополнить на 20 мэйликов (руб.)', event: pi_events.PAYFROMMAILIKI, value: 20},
				{caption: 'Пополнить на 30 мэйликов (руб.)', event: pi_events.PAYFROMMAILIKI, value: 30},
				{caption: 'Выбрать сумму пополнения в руб.', event: function(): void {
					payDialog();
				}},
				{caption: 'Заработать 10 мэйликов (руб.) пригласив друзей', event: pi_events.INVITEDIALOG}
			];
		} 
		
		override public function payDialog(postPayFunc: Function = null): void {
			var _payDialog: pi_payDialog = new pi_payDialog(this, postPayFunc);
			_payDialog.show();
		}
		
		override protected function createBanners(level: int): void {
//			new pi_ad_roll(this);
			if (level == 0) new pi_ad2(this, siteData.ad.ref_id);
//			else if (level == 1) new pi_ad3(layers[2]);
		}
		
		private function readHash(e: MailruCallEvent=null): void {
			MailruCall.removeEventListener('app.readHash', readHash);
			initialize(e?e.data:null);
			
/*			if (externalserver.vars['is_app_user'] == "1") initialize(e?e.data:null);
			else MailruCall.exec('mailru.app.users.requireInstallation', function(ie: MailruCallEvent): void {
				if (ie.data.status == 'success') initialize(e?e.data:null);
			}, ['widget', 'notifications']);*/
		}
		
		override protected function albumsPrepare(uid: String, a_albums: Array): Array {
			var notIDs : Array = ['_mydialog', '_myappwidgets', '_cards'];
			var result: Array = new Array();
			function checkAccess(album: Object): Boolean {
				if (notIDs.indexOf(album.aid) == -1) {
					if (uid == externalserver.viewer_id) return true
					else return (
									(album.privacy == 2) // доступно всем
									|| (album.privacy == 4) // доступно только друзьям
									|| (album.privacy == 5) // доступно только лучшим друзьям
								)
				} else return false;
			}
			for each (var album: Object in a_albums) {
				if (checkAccess(album)) {
					album.smallTitle = Utils.ll(album.title?album.title:album.created, 16);		
					result.push(album);
				}
			}
			return result;
		}
		
		protected function mailruReadyHandler(e: Event=null): void {
			_MailruCallActive = true;
			
			function _init01(e: Event = null): void {
				MailruCall.addEventListener('app.readHash', readHash);
				MailruCall.exec('mailru.app.utils.hash.read');
				new uif_Timer(1000, null, function(e: Event): void { // Ждем сек. события считывания хеша, если так и небыло вызова, вызываем принудительно
					if (MailruCall.hasEventListener('app.readHash')) {
						readHash();
						myserver.stat('saveAgent', externalserver.viewer_id + ';' + majorVersion + ';errorReadHash');
//						alert(This.classes.data.ERROR, This.siteData.ERRORREADHASH);
					}
				}, 1);
			}
			
			if (!checkVersion()) alert(pi_data.WARNING, pi_data.LOWFLASHPLAYER, _init01);
			else _init01();
			
			MailruCall.removeEventListener(Event.COMPLETE, mailruReadyHandler);
/*			if (!externalserver.vars['is_app_user']) {
				MailruCall.exec('mailru.app.users.requireInstallation', function(e: MailruCallEvent): void {
					if (e.data.status == 'success') initialize(_externalserver.vars);
				}, ['widget', 'notifications']);
			}*/
		}
		
		public function get mailruCallActive(): Boolean {
			return _MailruCallActive;
		}
		
		override protected function createExternalServer(): api_externalserver {
			return new pi_mailserver(this);
		} 
		
		override protected function afterLoadAlbums(uid: String, a_albums: Array): void {
			var list: Array = albumsPrepare(uid, a_albums);
			
			if (!_albums) _albums = new pi_albums(_layers[0], list, 0, 780, APPWIDTH, 100, 'tabBox');
			else _albums.assignAlbums(uid, list);
		}
	}
}